# 有的同学可能发现了，即使我们把.o的规则删掉，也能正常编译：
world.out: hello.o main.o
	gcc -o world.out hello.o main.o && echo "Build Success!"
# 因为make最初就是为了编译C程序而设计的，为了免去重复创建编译.o文件的规则，make内置了隐式规则（Implicit Rule），
# 即遇到一个xyz.o时，如果没有找到对应的规则，就自动应用一个隐式规则
# xyz.o: xyz.c
# 	cc -c -o xyz.o xyz.c

# 对于C程序来说，使用隐式规则有一个潜在问题，那就是无法跟踪.h文件的修改。
# 如果我们修改了hello.h的定义，由于隐式规则main.o: main.c并不会跟踪hello.h的修改，导致main.c不会被重新编译
clean:
	rm -f *.o world.out
